// pages/cart/cart.js
import { getSetting, chooseAddress, openSetting } from '../../utils/utils.js'
import regeneratorRuntime from '../../lib/runtime/runtime';//不能全局引入，使用es7语法的async地方引用 配合try...catch语法

Page({

  /**
   * 页面的初始数据
   */
  data: {
    address:"",
    cart:[],
    totalPrice:0,
    totalNum:0

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    


  },
  // 全选和反选
  handeAllChange(){
    console.log(555555)
    let { cart, allchecked} = this.data
    allchecked = !allchecked
    cart.forEach(v => v.checked = allchecked)
    this.setcart(cart)

  },
  handlePay(){
    const {address,totalNum}=this.data
    if(!address.userName){
      // 不直观
      wx.showToast({
        title: '您么有获取收货地址',
        image: '',
        duration: 1000,
        mask: true,
        success: function(res) {},
        fail: function(res) {},
        complete: function(res) {},
      })
          return
    }
    if (totalNum==0){
      wx.showToast({
        title: '您没有选购商品',
        image: '',
        duration: 1000,
        mask: true,
        success: function (res) { },
        fail: function (res) { },
        complete: function (res) { },
      })
      return

    }
    wx.navigateTo({url:'/pages/pay/pay'})

  },
  handleNumEdit(e){
    let that=this
    const {id, operation}=e.currentTarget.dataset
    let { cart } = this.data
    
    const index = cart.findIndex(v => v.goods_id === id)
    console.log(cart, index, id)
    if(cart[index].num===1 && operation===-1){
      wx.showModal({
        title: '确定删除吗',
        content: '',
        success(res){
          if(res.confirm){
             cart.splice(index,1)
            that.setcart(cart)
            return

          }else{
            return

          }
        }
      })
      return

    }
 
    cart[index].num+=operation;
    this.setcart(cart)


  },

  // 底部栏数据设置
  setcart(cart){
    const allchecked = cart.length ? cart.every(v => v.checked) : false //如果是空数组调用every 返回值就是true
    let totalprice = 0
    let totalnum = 0
    cart.forEach(v => {
      // 全选反选修改商品数量记得改变cart数据的check，num等属性而且需要重新计算总数量和总价格
      if (v.checked) {
        totalprice += v.num * v.goods_price
        totalnum += v.num

      }
    })
    this.setData({  cart: cart, allchecked, totalPrice: totalprice, totalNum: totalnum })
    wx.setStorageSync("cart", cart)


  },
  handeItemChange(e){
    const goods_id=e.currentTarget.dataset.id
    console.log(goods_id)
    let {cart}=this.data
    let index = cart.findIndex(v => v.goods_id === goods_id)
    cart[index].checked = !cart[index].checked
    // 
    this.setData({ cart})
    wx.setStorageSync("cart", cart)

    // 获取缓存中添加商品的信息
    const allchecked = cart.length ? cart.every(v => v.checked) : false //如果是空数组调用every 返回值就是true
    let totalprice = 0
    let totalnum = 0
    cart.forEach(v => {
      // 全选反选修改商品数量记得改变cart数据的check，num等属性而且需要重新计算总数量和总价格
      if (v.checked) {
        totalprice += v.num * v.goods_price
        totalnum += v.num

      }
    })
    this.setData({ allchecked, totalPrice: totalprice, totalNum: totalnum })


    
  },
 
  handlechooseAddress() {
    console.log(1111)
    // 调用内置api获取收货地址 如果点击取消在重新获取不会出现地址栏选择界面，首次会让用户选择地址权限，调用收货地址api前会询问到true才执行

// 嵌套循环太复杂用async 不管拒绝还是同意getSetting每次返回authSetting的对象为空
    // wx.getSetting({
    //   success: (res) => {
    //     const scopradress = res.authSetting['scope.address']
    //     console.log(scopradress)
    //     if (scopradress === true || scopradress === undefined) {
    //       wx.chooseAddress({
    //         success: (res) => {
    //           console.log(res)
    //         }
    //       })


    //       console.log(res)
    //     } else {
    //       // 为false值打不开
    //       // 诱导用户打开授权界面
    //       console.log(11111111111)
    //       wx.openSetting({
    //         success: (res) => {
    //           console.log(res)
    //           wx.chooseAddress({
    //             success: (res) => {
    //               console.log(res)
    //             }
    //           })
    //         }
    //       })

    //     }
    //   }
    // })
    wx.chooseAddress({
      success: (res) => {
        
        console.log(res)
        wx.setStorageSync('address', res)
       
      }
    })
  
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 获取个人用户信息
    console.log(77777777777)
    const address = wx.getStorageSync('address')
    // 获取缓存中添加商品的信息
    let cart = wx.getStorageSync('cart') || []
    const allchecked=cart.length? cart.every(v=>v.checked) : false //如果是空数组调用every 返回值就是true
     let totalprice=0
     let totalnum=0
      cart.forEach(v=>{
        // 全选反选修改商品数量记得改变cart数据的check，num等属性而且需要重新计算总数量和总价格
        if(v.checked){
          totalprice += v.num * v.goods_price
          totalnum+=v.num

        }
      })

    this.setData({ address: address, cart: cart, allchecked, totalPrice: totalprice, totalNum: totalnum })

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})